1   //==============================================================================
2   // file :       CommonCommand.java
3   // project:     East Networks News System
4   //
5   // last change: date:       $Date: 2003/09/10 09:28:37 $
6   //              by:         $Author: bitiboy $
7   //              revision:   $Revision: 1.1 $
8   //------------------------------------------------------------------------------
9   // copyright:   GNU GPL Software License (see class documentation)
10  //==============================================================================
11  package net.eastol.news.common;
12  
13  
14  /*
15   * $Id: CommonCommand.java,v 1.1 2003/09/10 09:28:37 bitiboy Exp $
16   *
17   * Copyright 2003 Acai Software All Rights Reserved.
18   *
19   * This file CommonCommand.java is part of the East Networks News System.
20  
21   * The East Networks News System is free software; you can redistribute it and/or modify
22   * it under the terms of the GNU General Public License as published by
23   * the Free Software Foundation; either version 2 of the License, or
24   * (at your option) any later version.
25  
26   * East Networks News System is distributed in the hope that it will be useful,
27   * but WITHOUT ANY WARRANTY; without even the implied warranty of
28   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
29   * GNU General Public License for more details.
30  
31   * You should have received a copy of the GNU General Public License
32   * along with the East Networks News System; if not, write to the Free Software
33   * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
34  
35   * http://www.justhis.com http://ejb.cn
36   * CONTACT: email = webmaster@justhis.com superaxis@sohu.com
37   */
38  import com.justhis.control.Command;
39  import com.justhis.control.CommandDispatcher;
40  
41  import com.justhis.jdo.JDOContext;
42  import com.justhis.jdo.JDOUtil;
43  
44  import com.justhis.jibx.JibxUtil;
45  
46  import com.justhis.util.XParameters;
47  import com.justhis.util.exception.LogicException;
48  import com.justhis.util.exception.PropertiesFileReadException;
49  import com.justhis.util.exception.UtilException;
50  
51  import com.justhis.xml.XMLHelper;
52  
53  import net.eastol.news.jdo.bean.NewsSys;
54  import net.eastol.news.jibx.bean.NewsCommonXML;
55  import net.eastol.news.jibx.bean.SystemConfig;
56  
57  import org.jibx.runtime.JiBXException;
58  
59  import org.w3c.dom.Document;
60  
61  import java.io.FileNotFoundException;
62  import java.io.IOException;
63  import java.io.OutputStream;
64  
65  import java.sql.SQLException;
66  
67  import java.util.Calendar;
68  import java.util.Locale;
69  
70  import javax.jdo.PersistenceManager;
71  import javax.jdo.Transaction;
72  
73  import javax.servlet.ServletConfig;
74  import javax.servlet.ServletException;
75  import javax.servlet.http.HttpServletRequest;
76  import javax.servlet.http.HttpServletResponse;
77  import javax.servlet.http.HttpSession;
78  
79  
80  /***
81   * TODO DOCUMENT ME!
82   *
83   * @author <a href="http://blog.ejb.cn">acai</a>
84   * @version $Revision $
85   */
86  public abstract class CommonCommand implements Command {
87      //~ Instance fields --------------------------------------------------------
88  
89      /*** ?????????????????????????????????????????? */
90      public XParameters xp = null;
91  
92      /*** Controller??????dispatcher. */
93      protected CommandDispatcher dispatcher = null;
94  
95      /*** app??????????Document. */
96      protected Document msgDoc = null;
97  
98      /*** request */
99      protected HttpServletRequest request = null;
100 
101     /*** response */
102     protected HttpServletResponse response = null;
103 
104     /*** session */
105     protected HttpSession session = null;
106 
107     /*** JDO?????????????????????????????????? */
108     protected JDOContext ctx = null;
109 
110     /*** ???????? */
111     protected Locale encoding = null;
112 
113     /*** ?????? */
114     protected OutputStream out = null;
115 
116     /*** PersistenceManager ????????????Object */
117     protected PersistenceManager pm = null;
118 
119     /*** ServletConfig .?????????????????? */
120     protected ServletConfig config = null;
121 
122     /*** ????????action */
123     protected String action = "";
124 
125     /*** Controller?????????????????? */
126     protected String nextPage = "";
127 
128     /*** TODO */
129     protected String systemOID = null;
130 
131     /*** ???????????????????????? */
132     protected String warPath = null;
133 
134     /*** ??????xslt??????parameters */
135     protected XParameters xmlParams = null;
136 
137     //~ Methods ----------------------------------------------------------------
138 
139     /***
140      * TODO
141      *
142      * @return TODO
143      *
144      * @throws UtilException TODO
145      */
146     public SystemConfig getSystemConfig() throws UtilException {
147         try {
148             return (SystemConfig) JibxUtil.unmarshallDocument(SystemConfig.class,
149                                                               warPath
150                                                               + "/config/SystemConfig.xml"
151                                                              );
152         } catch (JiBXException e) {
153             throw new UtilException(e.getMessage(), e);
154         }
155     }
156 
157     /***
158      * @see com.justhis.control.Command#init(com.justhis.control.CommandDispatcher)
159      */
160     public void init(CommandDispatcher dispatcher) throws ServletException {
161         this.dispatcher = dispatcher;
162 
163         xp = (XParameters) dispatcher.getProperties();
164         action = xp.getProperty("action");
165 
166         request = dispatcher.getRequest();
167         config = dispatcher.getServletConfig();
168         response = dispatcher.getResponse();
169         session = request.getSession();
170 
171         warPath = config.getServletContext().getRealPath("./");
172 
173         encoding = request.getLocale();
174 
175         systemOID = xp.getProperty("SYSTEM_OID");
176 
177         if ((systemOID == null) || "".equals(systemOID)) {
178             initSystem();
179         }
180 
181         System.out.println("SYTEMOID+==============" + systemOID);
182     }
183 
184     /***
185      * TODO
186      *
187      * @return TODO
188      */
189     protected synchronized long getDBSequence() {
190         Calendar rightNow = Calendar.getInstance();
191         long now = rightNow.getTimeInMillis();
192 
193         return now;
194     }
195 
196     /***
197      * TODO
198      *
199      * @return TODO
200      *
201      * @throws ServletException TODO
202      */
203     protected OutputStream getOuputStream() throws ServletException {
204         //	XMLHelper.outputXML(doc, new PrintStream(System.out));
205         try {
206             return response.getOutputStream();
207         } catch (IOException e) {
208             e.printStackTrace();
209             throw new ServletException(e.getMessage());
210         }
211     }
212 
213     /***
214      * TODO
215      *
216      * @return TODO
217      *
218      * @throws SQLException TODO
219      * @throws LogicException TODO
220      */
221     protected PersistenceManager getPM() throws SQLException, LogicException {
222         if (this.pm != null) {
223             return pm;
224         } else if ((pm = (PersistenceManager) request.getAttribute("SYSTEM_PM")) != null
225                   ) {
226             return pm;
227         } else {
228             try {
229                 initSystem();
230             } catch (ServletException e) {
231                 new LogicException(e.getMessage(), e);
232             }
233         }
234 
235         return this.pm;
236     }
237 
238     /***
239      * @return TODO
240      */
241     protected Transaction getTransaction() throws SQLException, LogicException {
242         
243         return this.getPM().currentTransaction();
244     }
245 
246     /***
247      * TODO
248      *
249      * @return TODO
250      */
251     protected String getXsltFileFromUrl() {
252         String path = request.getServletPath();
253         String xslFile = path.substring(path.lastIndexOf("/") + 1,
254                                         path.lastIndexOf(".")
255                                        );
256 
257         return xslFile + ".xsl";
258     }
259 
260     /* protected void publishXML(Document doc, String xslFileName)
261          throws ServletException, XMLException {
262          this.appendMSGDoc(doc);
263 
264          //XMLHelper.outputXML(doc, new PrintStream(System.out));
265          try {
266              out = response.getOutputStream();
267          } catch (IOException e) {
268              e.printStackTrace();
269              throw new ServletException(e.getMessage());
270          }
271 
272          if (encoding != null) {
273              doc.getDocumentElement().setAttribute("locale", encoding.toString());
274          }
275 
276          File xslFile = new File(warPath + "/WEB-INF/xsl/" + xslFileName);
277 
278          //????Javax.xml.transformer??transform XML Document
279          Document result = XMLHelper.transformXML(doc, xslFile, this.xmlParams);
280          XMLHelper.outputXML(result, new PrintStream(out));
281      }
282     */
283 
284     /***
285      * @param doc
286      */
287     protected void appendMSGDoc(Document doc) {
288         if (this.msgDoc != null) {
289             XMLHelper.mergeXML(doc.getDocumentElement(),
290                                msgDoc.getDocumentElement(), false
291                               );
292         }
293     }
294 
295     /***
296      * TODO
297      *
298      * @param obj TODO
299      * @param xslt TODO
300      *
301      * @throws ServletException TODO
302      * @throws UtilException TODO
303      */
304     protected void go(Object obj, String xslt)
305                throws ServletException, UtilException {
306         try {
307             JibxUtil.marshallDocument(obj, xslt, this.getOuputStream());
308         } catch (FileNotFoundException e) {
309             throw new ServletException(e);
310         } catch (JiBXException e) {
311             throw new ServletException(e.getMessage(), e);
312         }
313     }
314 
315     /***
316      * TODO
317      *
318      * @throws ServletException TODO
319      * @throws UtilException TODO
320      */
321     protected void go() throws ServletException, UtilException {
322         NewsCommonXML ncx = new NewsCommonXML();
323 
324         go(ncx, this.getXsltFileFromUrl());
325     }
326 
327     /***
328      * TODO
329      *
330      * @param obj TODO
331      *
332      * @throws ServletException TODO
333      * @throws UtilException TODO
334      */
335     protected void go(Object obj) throws ServletException, UtilException {
336         go(obj, this.getXsltFileFromUrl());
337     }
338 
339     /***
340      * TODO
341      *
342      * @param ns TODO
343      *
344      * @throws UtilException TODO
345      */
346     protected void printClassList(NewsSys ns) throws UtilException {
347         try {
348             JibxUtil.marshallDocument(ns, null,
349                                       warPath + "/config/ClassList.xml"
350                                      );
351         } catch (FileNotFoundException e) {
352             throw new UtilException(e.getMessage(), e);
353         } catch (JiBXException e) {
354             throw new UtilException(e.getMessage(), e);
355         }
356     }
357 
358     /***
359      * TODO
360      *
361      * @throws UtilException TODO
362      * @throws SQLException TODO
363      * @throws LogicException TODO
364      */
365     protected void printClassList()
366                            throws UtilException, SQLException, LogicException {
367         NewsSys ns = (NewsSys) JDOUtil.findObjectById(this.getPM(),
368                                                       NewsSys.class, systemOID
369                                                      );
370         this.printClassList(ns);
371     }
372 
373     /***
374      * TODO
375      *
376      * @throws ServletException TODO
377      */
378     private void initSystem() throws ServletException {
379         /***
380          * ??????????????????????
381          */
382         try {
383             pm = JDOContext.getContext().getPersistenceManager();
384             request.setAttribute("SYSTEM_PM", this.pm);
385         } catch (PropertiesFileReadException e) {
386             throw new ServletException(e);
387         }
388 
389         try {
390             systemOID = NewsSys.initSystem(this.pm);
391             request.setAttribute("SYSTEM_OID", systemOID);
392         } catch (UtilException e) {
393             System.out.println("     Initial System fail!      ");
394 
395             throw new ServletException(e);
396         }
397     }
398 }
399 
400 
401 /*
402  * $Log: CommonCommand.java,v $
403  * Revision 1.1  2003/09/10 09:28:37  bitiboy
404  * *** empty log message ***
405  *
406  *
407 */
This page was automatically generated by Maven